﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SCIE_DTL;
using System.Data;
using System.Data.SqlClient; 


namespace SCIE_DAL
{
    /// <summary>
    /// Criada em:
    /// Por:
    /// Descrição:
    /// </summary>
    public class EstacaoTrabalhoDAO : EquipamentoDAO<EstacaoTrabalhoDTO>
    {
        #region Propriedades
        internal override string ObterNomeTabela()
        {
            string nomeTabela = "ESTACAOTRABALHO";
            return nomeTabela;
        }
        #endregion

        #region Métodos
       
        /// <summary>
        /// 
        /// </summary>
        /// <param name="etiqueta"></param>
        /// <param name="newDto"></param>
        /// <returns></returns>
        internal override IDbCommand CriarComandoAtualizacao(string etiqueta, EstacaoTrabalhoDTO newDto)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="etiqueta"></param>
        /// <returns></returns>
        internal override IDbCommand CriarComandoBuscaEquipamentoPorEtiqueta(string etiqueta)
        {
            string sql = "SELECT * FROM " + ObterNomeTabela() + " WHERE ETIQUETA = '" + etiqueta + "';";
            return factory.CreateCommand(sql);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        internal override IDbCommand CriarComandoBuscarTodos()
        {
            string sql = "SELECT * FROM " + ObterNomeTabela() + " E , EQUIPAMENTO Q WHERE E.ETIQUETA=Q.ETIQUETA;";
            return factory.CreateCommand(sql);
        }
        internal override IDbCommand CriarComandoInsercao(ITransferenciaDados dto)
        {
            throw new NotImplementedException();
        }
        internal override IDbCommand CriarComandoRemocao(EstacaoTrabalhoDTO dto)
        {
            string sql = "DELETE" + ObterNomeTabela() + "WHERE ETIQUETA='" + dto.Etiqueta + "';";
            return factory.CreateCommand(sql);
        }

        internal override IDbCommand CriarComandoRemocao(string etiqueta)
        {
            string sql = "DELETE" + ObterNomeTabela() + "WHERE ETIQUETA=" + etiqueta + ";";
            return factory.CreateCommand(sql);
        }

        internal override void PopularDto(IDataReader leitor, EstacaoTrabalhoDTO equipamento)
        {
            equipamento.Etiqueta = (string)leitor["ETIQUETA"];
            equipamento.Hd = (int)leitor["HD"];
            equipamento.Memoria = (string)leitor["Memoria"];
            equipamento.PlacaMae = (int)leitor["PLACA_MAE"];
            equipamento.Software = (int)leitor["SOFTWARE"];
            equipamento.Processador = (int)leitor["PROCESSADOR"];
            equipamento.Fonte = (string)leitor["FONTE"];
            equipamento.Potencia_Fonte = (string)leitor["POTENCIA_FONTE"];
            equipamento.DriveCd_Dvd = (string)leitor["DRIVERCD_DVD"];
            equipamento.Flopy = (string)leitor["FLOPY"];
            equipamento.Usb = (string)leitor["USB"];
            equipamento.Ip = (string)leitor["IP"];
        }

       /* public override void PopularDto(IDataReader leitor, ref ITransferenciaDados equipamento)
        {

            equipamento.Etiqueta = (string)leitor["ETIQUETA"];
            equipamento.Hd = (int)leitor["HD"];
            equipamento.Memoria = (string)leitor["Memoria"];
            equipamento.PlacaMae = (int)leitor["PLACA_MAE"];
            equipamento.Software = (int)leitor["SOFTWARE"];
            equipamento.Processador = (int)leitor["PROCESSADOR"];
            equipamento.Fonte = (string)leitor["FONTE"];
            equipamento.Potencia_Fonte = (string)leitor["POTENCIA_FONTE"];
            equipamento.DriveCd_Dvd = (string)leitor["DRIVERCD_DVD"];
            equipamento.Flopy = (string)leitor["FLOPY"];
            equipamento.Usb = (string)leitor["USB"];
            equipamento.Ip = (string)leitor["IP"];
        }*/
        public IDbCommand CriarBuscarEquipamentoPorColuna(String nomeColuna, String valorColuna)
        {
            string sql = "SELECT * FROM " + ObterNomeTabela() + " WHERE "+nomeColuna+"='"+valorColuna+"'";
            return factory.CreateCommand(sql);

        }
        
        public override void AtualizarEquipamento(string etiqueta, EstacaoTrabalhoDTO newDto)
        {
            base.AtualizarEquipamento(etiqueta, newDto);
        }
                
        public EstacaoTrabalhoDTO BuscarEquipamentoPorColuna(string coluna,string atributo)
        {
            IDbCommand comando = CriarBuscarEquipamentoPorColuna(coluna,atributo);
            try
            {
                comando.Connection.Open();
                IDataReader leitor = comando.ExecuteReader();
                if (leitor.Read())
                {
                    EstacaoTrabalhoDTO item = new EstacaoTrabalhoDTO();
                    PopularDto(leitor, item);
                    return item;
                }
                else
                    return null;
            }
            finally
            {
                comando.Dispose();
            }
        }



      
        #endregion 
    }
}
